package pwd.allen.behavior.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * 抽象被观察者接口
 * 定义添加、删除、通知观察者方法
 *
 * @author lenovo
 * @create 2019-12-27 10:31
 **/
public abstract class Observable<T> {

    protected List<Observer<T>> list = new ArrayList<Observer<T>>();

    /**
     * 添加观察者
     * @param observer
     */
    public void add(Observer<T> observer) {
        this.list.add(observer);
    }
    /**
     * 移除观察者
     * @param observer
     */
    public void remove(Observer<T> observer) {
        this.list.remove(observer);
    }
    /**
     * 通知观察者
     */
    public abstract void notifyObservers(T t);
}
